package entidadesBD;

import java.sql.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.*;

import entidadesVO.*;

@Entity
@DiscriminatorValue("ROPA")
public class Ropa extends Articulo{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String talle;
	private String nombre;
	private String seccion;
	private String origen;
	
	public Ropa(String descripcion, float precio, float descuento, Set<CentroDistribucion> centrosDeDistribucion, String referencia, String color, String linea, Date fechaDeIngreso, int nuevo, int mesDeDescuento, int codigoArticulo, Set<ArticuloComponentes> articuloComponentes, String talle, String nombre, String seccion, String origen) {
		super(descripcion, precio, descuento, centrosDeDistribucion, referencia, color, linea, fechaDeIngreso, nuevo, mesDeDescuento, codigoArticulo, articuloComponentes);
		this.talle = talle;
		this.nombre = nombre;
		this.seccion = seccion;
		this.origen = origen;
	}
	/*
	 * Constructor sin Set (centrosDeDistribucion y articulosComponentes)
	 */
	public Ropa(String descripcion, float precio, float descuento, String referencia, String color, String linea, Date fechaDeIngreso, int nuevo, int mesDeDescuento, int codigoArticulo, String talle, String nombre, String seccion, String origen) {
		super(descripcion, precio, descuento, referencia, color, linea, fechaDeIngreso, nuevo, mesDeDescuento, codigoArticulo);
		this.talle = talle;
		this.nombre = nombre;
		this.seccion = seccion;
		this.origen = origen;
	}
	/*
	 * Constructor Vacio
	 */
	public Ropa(){
		
	}
	
	@Column
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	@Column
	public String getOrigen() {
		return origen;
	}
	public void setOrigen(String origen) {
		this.origen = origen;
	}
	
	@Column
	public String getSeccion() {
		return seccion;
	}
	public void setSeccion(String seccion) {
		this.seccion = seccion;
	}
	
	@Column
	public String getTalle() {
		return talle;
	}
	public void setTalle(String talle) {
		this.talle = talle;
	}
	
	@Transient
	public RopaVO getRopaVO(){
		RopaVO ropaVO = new RopaVO(descripcion, precio, descuento, referencia, color, linea, fechaDeIngreso, nuevo, mesDeDescuento, codigoArticulo, talle, nombre, seccion, origen);
	
		Set<CentroDistribucionVO> centrosDeDistribucionVO = new HashSet<CentroDistribucionVO>();
		Object[] centrosDeDistribucionArray = centrosDeDistribucion.toArray();
		
		for (int i = 0; i < centrosDeDistribucionArray.length; i++){
			CentroDistribucion centroDistribucion = (CentroDistribucion)centrosDeDistribucionArray[i];
			CentroDistribucionVO centroDistribucionVO = centroDistribucion.getCentroDistribucionVO();
			centrosDeDistribucionVO.add(centroDistribucionVO);
		}
		ropaVO.setCentrosDeDistribucion(centrosDeDistribucionVO);
		
		Set<ArticuloComponentesVO> articuloComponentesVO = new HashSet<ArticuloComponentesVO>();
		Object[] articuloComponentesArray = articuloComponentes.toArray();
		
		for (int i = 0; i < articuloComponentesArray.length; i++){
			ArticuloComponentes articuloComponentes = (ArticuloComponentes)articuloComponentesArray[i];
			ArticuloComponentesVO articuloComponenteVO = articuloComponentes.getArticuloComponentesVO();
			articuloComponentesVO.add(articuloComponenteVO);
		}
		ropaVO.setArticuloComponentes(articuloComponentesVO);
		
		return ropaVO;
	}
	
	/*
	 * En base a un articulo VO sin codigo genera un articulo 
	 */
	public void setRopa(RopaVO ropaVO){
		this.descripcion = ropaVO.getDescripcion();
		this.precio = ropaVO.getPrecio();
		this.descuento = ropaVO.getDescuento();
		this.referencia = ropaVO.getReferencia();
		this.color = ropaVO.getColor();
		this.linea = ropaVO.getLinea();
		this.fechaDeIngreso = ropaVO.getFechaDeIngreso();
		//Se ingresa el valor utilizando metodos Setter
		//this.nuevo = ropaVO.getNuevo();
		this.mesDeDescuento = ropaVO.getMesDeDescuento();
		this.talle = ropaVO.getTalle();
		this.nombre = ropaVO.getNombre();
		this.seccion = ropaVO.getSeccion();
		this.origen = ropaVO.getOrigen();
	}
}
